import defaultPage from "@/pages.json";
import { getToken } from "@/utils/auth";
import { getItem } from "@/utils/localStorage";
/**
 * @description 自定义路由拦截
https://www.jianshu.com/p/bae4cf971343
 */

export default async function () {
  const list = ["navigateTo", "redirectTo", "reLaunch", "switchTab"];
  // 用遍历的方式分别为,uni.navigateTo,uni.redirectTo,uni.reLaunch,uni.switchTab这4个路由方法添加拦截器
  list.forEach((item) => {
    uni.addInterceptor(item, {
      invoke(e) {
        const url = e.url.split("?")[0]; // 获取要跳转的页面路径（url去掉"?"和"?"后的参数）
        // console.log("路由：", url);
        // console.log('url路由拦截-地址', url)
        if (url !== "/pagesA/oneClickLogin/index") {
          //并缓存要去的页面路由以便用户登录成功后直接跳转
          uni.setStorageSync("toRouter", url);
          // console.log('不是login')
        }

        // 拿到主包，分包页面信息
        const { pages, subPackages } = defaultPage;

        // 所有的页面
        let newArrPage = [];
        //  主包页面
        pages.map((item) => {
          newArrPage.push(item);
        });
        // 分包页面（因为分包里的数据比较特殊）
        subPackages.map((item) => {
          item.pages.map((item2) => {
            let app = {
              path: item.name + "/" + item2.path,
              meta: item2?.meta,
            };
            newArrPage.push(app);
          });
        });

        // 遍历所有页面path 和 将即将想去的页面 做对比（拿到页面上meta信息就可以判断当前是否需要接单后才可以访问）
        newArrPage = newArrPage.find((item) => `/${item.path}` == url);

        // console.log("newArrPage：", newArrPage);
        const token = getToken();
        const userInfo = getItem("userInfo");
        // // console.log('url路由拦截-用户缓存', pass, userInfo, !userInfo)
        // // 是白名单并且没有token

        // 如果当前页面未开放
        if (newArrPage.meta?.notOpen) {
          uni.showModal({
            title: "提示",
            content: "暂未开放",
            showCancel: false,
            confirmText: "确定",
          });
          return false;
        }

        console.log("getToken:", newArrPage);

        // 必须登录
        // if (pass) {
        if (newArrPage.meta?.login) {
          if (!token) {
            // 没有token（未登录）
            // 没有登录
            uni.showModal({
              title: "提示",
              content: "请先登录",
              confirmText: "去登录",
              success: function (res) {
                if (res.confirm) {
                  // 登录页面
                  uni.navigateTo({
                    url: "/pagesD/oneClickLogin/index",
                  });
                } else if (res.cancel) {
                }
              },
            });
            return false;
          }
        }
        return e;
      },
      fail(err) {
        // 失败回调拦截
        console.log(err);
      },
    });
  });
}
